<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>170数组中的其它方法</title>
</head>

<body>
  <h1>170数组中的其它方法</h1>
  <script>
    // 一、实例方法
    // 1 join() 将一个数组的所有元素连接成一个字符串并返回这个字符串。

    /* 
      2 find() 返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。
        let arr = [1, 2, 3]
        let res = arr.find(item => {
          return item > 1
        })
        console.log(res)
    */

    /* 
      3 every() 测试一个数组内的所有元素是否都能通过指定函数的测试。它返回一个布尔值。
        let arr = [1, 2, 3]
        let res = arr.every(item => {
          return item > 0
        })
        console.log(res)
    */

    /* 
      4 some() 测试数组中是否至少有一个元素通过了由提供的函数实现的测试。它返回一个布尔值。
        let arr = [1, 2, 3]
        let res = arr.some(item => {
          return item > 2
        })
        console.log(res)
    */

    /* 
      5 concat() 用于合并两个或多个数组。此方法不会更改现有数组，而是返回一个新数组。
        let arr = [1, 2, 3]
        let arr2 = [4, 5, 6]
        let res = arr.concat(arr2)
        console.log(res)
    */

    /* 
      6 sort() 
        对数组的元素进行排序，并返回对相同数组的引用(会改变原数组)。
        默认是将元素转换为字符串，然后按照它们的 UTF-16 码元值升序排序。
        如果想要不改变原数组的排序方法，可以使用 toSorted()。

        let arr = [1, 26, 111]
        console.log(arr.sort()) // [1, 111, 26]
        console.log(arr) // [1, 111, 26]
        arr.sort(function (a, b) {
          return a - b // 升序
        })
        console.log(arr)
        arr.sort(function (a, b) {
          return b - a // 降序
        })
        console.log(arr)

        let arr2 = [1, 26, 111]
        console.log(arr2.toSorted()) // [1, 111, 26]
        console.log(arr2) // [1, 26, 111]
    */

    // 7 splice() 删除或者替换已存在的元素或者添加新的元素。返回值包含了删除的元素的数组。会改变原数组。

    // 8 reverse() 反转数组中的元素，并返回同一数组的引用(会改变原数组)。

    // 9 findIndex() 返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回 -1。

    // 练习
    const spec = {
      size: '40cm*40cm',
      color: '黑色'
    }
    console.log(spec.size + '/' + spec.color)

    console.log(Object.values(spec).join('/'))

    // 一、静态方法
    // 10 from() 从可迭代或类数组对象创建一个新的浅拷贝的数组实例。
    function fn(a, b, c) {
      console.log(arguments)
      // arguments.pop() // 会报错，类数组对象arguments无法使用数组相关的方法
      let args = Array.from(arguments)
      args.pop()
      console.log(args)
    }
    fn(1, 2, 3)
  </script>
</body>

</html>